//
//  HMMainViewController.swift
//  HMVVeibo23
//
//  Created by apple on 17/1/16.
//  Copyright © 2017年 apple. All rights reserved.
//

import UIKit

class HMMainViewController: UITabBarController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // 实例化自定义tabBar
        let tabBar = HMTabBar()
    
        // 设置代理
        tabBar.hmDelegate = self
//        // 02- 实例化闭包
        tabBar.closure = {
            // -04 闭包回调
            print("HMMainViewController监听到了按钮点击")
            // 实例化
            let composeView = HMComposeView()
            composeView.show(target: self)
        }
        // 通过kvc 给只读属性赋值
        setValue(tabBar, forKey: "tabBar")
        // 首页
        addChildViewController(HMHomeViewController(), title: "首页", imgName: "tabbar_home")
        // 消息
        addChildViewController(HMMessageViewController(), title: "消息", imgName: "tabbar_message_center")
        // 发现
        addChildViewController(HMDiscoverViewController(), title: "发现", imgName: "tabbar_discover")
        // 我
        addChildViewController(HMProfileViewController(), title: "我", imgName: "tabbar_profile")
        
    }

}
// MARK: - 添加子控制器的公共方法时
extension HMMainViewController {
    /// 添加子控制器的公共方法时
    ///
    /// - Parameters:
    ///   - childController: 控制器
    ///   - title: 名字
    ///   - imgName: 图片名称
    func addChildViewController(_ childController: UIViewController, title: String, imgName: String) {
        // 设置title
        //        childController.navigationItem.title = title
        //        childController.tabBarItem.title = title
        childController.title = title
        // 设置title颜色
        
        childController.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: HMThemeColor], for: UIControlState.selected)
        // 设置image
        // withRenderingMode 渲染方式
        // alwaysOriginal 采用图片原生颜色
        childController.tabBarItem.image = UIImage(named: imgName)?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        childController.tabBarItem.selectedImage = UIImage(named: "\(imgName)_selected")?.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        // 添加子控制器
        addChildViewController(HMNavigationController(rootViewController: childController))
    }
}

// MARK: - HMTabBarDelegate
/*
    - extension 类似于OC中的categroy (给类添加方法)
    - 格式: extension 类名 {}
    - Swift 可读性很差 通过extension 完成代码分块
    - extension 可以添加计算型属性 不能添加存储型属性 可以定义便利构造函数 不能定义 指定构造函数
 */
extension HMMainViewController: HMTabBarDelegate{
    // 04
    func composeButtonDidSelected() {
        print("HMMainViewController监听到了按钮点击")
    }
}



